package mysql8学习.高级.第13章_事务的基本知识;

/**
 *2.1显式事务
 * 步骤1: START TRANSACTION 或者 BEGIN，作用是显式开启一个事务。
 * mysq1> BEGIN;
 * mysq1> START TRANSACTION;
 *
 * START TRANSACTION 语句相较于BEGIN特别之处在于，后边能跟随几个修饰符:
 * ① READ ONLY:  只读事务
 *   标识当前事务是一个只读事务，也就是属于该事务的数据库操作只能读取数据，而不能修改数据。
 *   补充:只读事务中只是不允许修改那些其他事务也能访问到的表中的数据，
 *       对于临时表来说(我们使用CREATE TMEPORARY TABLE创建的表)，
 *       由于它们只能在当前会话中可见，所以只读事务其实也是可以对临时表进行增、删、改操作的。
 * ② READ WRITE: 读写事务 (默认的)
 *   标识当前事务是一个读写事务，也就是属于该事务的数据库操作既可以读取数据，也可以修改数据。
 * ③ WITH CONSISTENT SNAPSHOT :启动一致性读。
 *   ● READ ONLY和READ WRITE是用来设置所谓的事务访问模式的，
 *    就是以只读还是读写的方式来访问数据库中的数据，
 *    一个事务的访问模式不能同时既设置为只读的也设置为读写的,
 *    所以不能同时把READ ONLY 和READ WRITE 放到START TRANSACTION 语句后边。
 *   ● 如果我们不显式指定事务的访问模式，那么该事务的访问模式就是读写模式。
 *
 *
 * 步骤2:一系列事务中的操作(主要是DML,不含DDL)
 * 步骤3:提交事务或中止事务(即回滚事务)
 *      mysq1> COMMIT ;#提交事务。当提交事务后，对数据库的修改是永久性的。
 *      mysq1> ROLLBACK;
 *      mysql> ROLLBACK TO [ SAVEPOINT ] #将事务回滚到某个保存点。
 *   其中关于SAVEPOINT相关操作有:
 *     SAVEPOINT 保存点名称;#在事务中创建保存点，方便后续针对保存点进行回滚。一个事务中可以存在多个保存点。
 *
 *     RELEASE SAVEPOINT 保存点名称;//#删除某个保存点。
 *
 *
 */
public class B1_显式事务 {//myisam不支持事务  InnoDB 支持事务
}
